2005/10/27

認知心理学の登場(ロカポ誕生の記録:7)

認知心理学の登場

これまでの投稿で書いたとおり、ジオコードに要求される要素はすべて相反するものでした。
つまり
・絶対的な情報量(コードがカバーする地域と、精度によって決まる)
・表示桁数(同じ情報量なら、N進法のNを大きくすればある程度短くなる)
・表示文字種類(N進数を表すにはN種類の文字が必要。Nが多くなると扱いにくくなる)

さらに技術的要素と「扱いやすさ」も相反します。
・外部データベースを使用すると、データがないとデコードできない
・データ圧縮などの複雑なアルゴリズムを使うと、いざというときに手計算では復号できない
これを全部やろうというのは、いささか無謀な挑戦に思えます。

確かに技術的な観点で言えば、これ以上は八方塞がりです。ただ、今回は「人間が使いやすい!」をテーマにしているので、読むのはコンピュータでなくて人間です。そこで「認知心理学」の登場となります。

認知心理学については私は素人ですので、専門的な事は書けませんが、さわりだけ。もし間違っていましたらご指摘頂ければ幸いです。
認知心理学に「チャンク」という考え方があります。電話番号で言うと090XXXXXXXX と書くと分かりにくいですが、090-XXXX-XXXXと書くと、見易さ、読みやすさ、が向上します。もともとの電話番号では市外局番、市内局番、番号で分かれています。人間が一度に処理できる物事の数を「短期記憶容量」と言って、最大7個までと言われています。(参考:"The Magical Number Seven, Plus or Minus Two" by George A Miller)
ただし、単純な個数ではなく、意味のあるかたまり単位の個数で、これを「チャンク」と言います。
例えば、7つ以上のアイテムを羅列してみます。
「キャベツ、ソーセージ、ヨーグルト、大根、チーズ、鶏肉、牛乳、にんじん、牛ミンチ」
アイテムは9つあり、脳が一度に9つの情報を受け取るので、そのまま覚えるのは難しいですよね?
これをこうするとどうでしょう?
肉類は「牛ミンチ、ソーセージ、鶏肉」
野菜類は「キャベツ、にんじん、大根」
乳製品は「牛乳、ヨーグルト、チーズ」

整理すると覚えやすいですね。これはまずアイテムの分類で3チャンクに分けることで、脳に一度に処理させるアイテムを3に落とし、それぞれのカテゴリでさらに3つずつのアイテムを扱わせたからです。

もう一つ例を挙げます。つぎの二つの文字列は、技術的にはまったく同じ情報量です。でも読んでみてください。覚えられますか?多分二つ目の方は、すぐに記憶・再現できると思います
「mnisnytasohtddaaoanoaz」
「toyotahondanissanmazda」
おわかりのように、一つ目はランダムな文字列ですが、二つ目のほうはよく見ると
「toyota honda nissan mazda」と並んでいます。これが頭の中で車メーカーという単位で4チャンクとして処理されるので記憶が容易になります。
さらに
「toyota-honda-nissan-mazda」と区切りを入れると、技術的な意味では区切り文字の分だけ桁数が増えていますが、さらに読みやすくなっています。

さらに厳密には認知心理学とは異なるかもしれませんが、語呂合わせや、リズムや韻など、他にも記憶を助ける方法はいろいろとありそうです。

元々は学校の論文を書くときにいつも参考にしていた「考える技術・書く技術―問題解決力を伸ばすピラミッド原則
バーバラ・ミント著
」に、マジック・ナンバー「7」の事が載っていたのですが、たまたまこの本を読み返していて、「この辺りの工夫をジオコードに取り入れてみたら、情報量を犠牲にせずに読みやすいコードができるのではないか?」とひらめきました。
早速図書館をいくつか回って、認知心理学やら記憶術、暗記法の類の本をかき集めてきました。


続く....

Google API の測地系が急に変わった!?

ブログの投稿がだいぶ滞っていました。
数日前、現在Firefoxでしか動いていない、Locapointの「Direction Creator」のバージョンアップ作業をしていて、 Google Maps に渡すURL中の ll=... パラメータが急に世界測地系で処理されていることに気づいた。Webを探しても情報が無かったので、私の勘違いか?前からそうだったかな?と思いつつ、「ここギコ」のねねさんに聞いてみたところ、早速記事にアップしていただきました。そうしたらもうトラックバックが。さすがここギコさんですね。
GoogleMapsのAPIも、10/1の時点ではmap.20.jsだったものが、10/24現在maps.26.jsで、数日おきに更新されている。すごい勢いで開発しているなあ、と思いつつも、いつまた元に戻るか分からないし、フラグでも付けて両方対応にしておくべきかなと検討中です。
Locapointはもともとグローバル対応を目指しているので、実はWGS84で統一してもらえるとほっとします。これが日本ではTokyo Datum、オーストラリアではAustralian Geodetic Datum(AGD84)等と地域ごとにやられたらたまりません・・・・
いっそWGS84を"Google Maps Datum"とでも命名して一気にデファクトスタンダード化してくれないかな、、、、

2005/10/15

ジオコードの分類(ロカポ誕生の記録:6)

前回いくつかのジオコードを紹介した。ジオコードは沢山あるが、おおよそ次の3つのタイプに分類できる。ほぼ全てのジオコードはこれらのいずれか、またはこれらの組み合わせで実現されている。

1.メッシュコード型
ある領域の面を、長方形または緯線、経線によるメッシュで段階的に区切っていき、そのメッシュの番号を元にコード化するタイプ。デンソーのマップコードなどがその典型である。

2.暗号型
緯度、経度の数値を、特定のアルゴリズムで符号化するものである。ソニーのジオコードがそれにあたる。

3.データベース型
位置情報の一部または全部をデータベースに保存し、データを呼び出すキーをコードとするタイプ。アイシン エイ ダブリュのナビゲーションコードは、度にあたる部分を都市名に置き換え、デコード時に都市名から緯度および経度の「度」の情報をデータベースから呼び出して復号している。
極論すれば、位置情報を全部データベースに保存することも考えられる。緯度経度を丸ごとデータベースに入れて「○○の家」という名前をコードにすることも可能である。

これらにはそれぞれメリット・デメリットがあり、私が考えるところでは以下のようになると思う。

























  メッシュコード型 暗号型 データベース型
短い表示桁数 ×
読みやすさ ×
保守運用の容易さ ×


そこで、ロカポ開発のベースとして、暗号型を選択し、なんとか読みやすさを向上させる方法を模索することにした。
続く..

いろいろな“ジオコード” (ロカポ誕生の記録:5)

ロカポを開発するにあたり、ロカポの先輩にあたる現在ある“ジオコード“(=ここでは位置情報をコード化したもの、と広い意味でとらえています)を調べてみた。
「緯度経度は面倒くさい、もっと簡単なコードを」と考えるのは誰でも同じで、本当に数多くの「ジオコード」が提案されている。
ここでは本当はもっと沢山あるのでしょうが、私が調べた範囲で、これらのコード達を敬意をこめて紹介いたします。(なお、それぞれにコメントをつけていますが、私のコメント中に記載したメリット、デメリットはあくまでも私個人の感想であり、該当するコードを非難あるいは評価したものではないことをご了承下さい。)

マップコード株式会社デンソーが開発したジオコード。日本全国を基準となる複数の正方形に分割し、それぞれの正方形を30マス×30マス=900マスの正方形で分割、と分割を3レベル繰り返し、日本全国の任意の位置(正確には約30メートル×30メートルのエリア)を10桁の整数値で表せるようにしたもの。さらに高精度用の拡張フォーマットとして、3メートル四方の領域を表す精度には、元の10桁+「*(アスタリスク)」+2桁の数字で12桁のフォーマットで表す仕様が用意されている。大きな特徴としては、もとの基準正方形の選択に人口密度等を考慮に入れて、首都圏や大都市でのマップコードが表す値が小さくなるように設計されていることである。これにより、例えば首都圏のマップコードは場所により4桁で表現できる。(上位6桁はゼロになるので表記を省略している)
コンセプトとしてはビデオ予約のGコードと同じ考え方であり、ジオコードとしてこのアイデアを取り入れたものはおそらくマップコードが初めてであろう。
欠点は対象領域が日本国内に限定されていることである。マップコードのサイトでは、海外向けも検討しているとされているが、10桁の桁数と30メートルの精度を確保する場合、対象とできる面積には自ずと限界がある。各国で導入したとしても、それぞれの国でのマップコード間には関連性はなく、独立したものとなると予想される。

MGコード(マップルガイドコード)
昭文社発行の各種ガイドブック・地図に掲載されている7~8桁のコードナンバーであり、正確には緯度経度のように任意の地点を表記可能なジオコードではない。ただし、ツーリングマップルの普及に伴って、バイク乗りの間で普及している。

Sonyソニーもジオコードの特許をアメリカで取得している(US Patent 6,005,504)。簡単に説明すると、緯度、経度をともに0.1秒単位のステップに変換し、二進数に変換、緯度を上位桁経度を下位桁にして二進数の文字列を連結する。この二進数の数を37進数で表すことにより、9桁のコードで表現する。37進数の用いる文字は数字、英数字、および「=(イコール)」の計37文字である。
ソニーの米国特許取得のポイントとしては、誤り訂正符号をつけるというアイデアがある。この場合は9桁には収まらないが、例えばコードを10桁にし、最後の一桁をチェックディジットとすることが可能である。
このようにランダムなコードの入力は誤り訂正符号があると入力ミスを検出しやすいという利点がある。

The Natural Area Coding System (NAC)
カナダのベンチャー企業、NAC Geographic Products Inc. のXinhang Shen博士が開発したジオコード。Webによると1995年からのようである。
私が見たジオコードの中でもっとも優れていると思う。
全世界の緯度と経度それぞれを対象に、30で順に分割し、更に30で分割、とこれを繰り返す。他のジオコードと違って、領域を面で分割していくのではなく、緯度および経度おという二つの二次元のデータを30づつ分割している。
コードの表記は、緯度、経度それぞれ独立しており、30進法で表記している。この表記にはアルファベット大文字の子音20個+数字が使われている。使われていない文字は母音の(A,E,I,O,U,)と(Y)である。IやOが使われていないので、数字の1や0との間違いがなくなる、という優れたアイデアがある。
Shen氏はこれをユニバーサルアドレスとして、住所代わりに使うアイデア等を提唱している。
標準は5桁+スペース+5桁で経度方向0.0000148度(=約1.6メートル)、緯度方向はその半分の分解能を実現しており、ジオコードの中では最も精度が高い。さらに6桁×6桁にするとその30倍の精度を実現できる。仕様上、桁数に制限がないので、任意の精度を選択可能である。
また、緯度、経度がスペースを挟んで並んでいるか、拡張仕様としてスペースをもう一つ挟んでZ方向(高さ方向)もデータを記述できるようになっている。
また、ハイフンを組合わせることで点ではなくエリアを表現できるようになっている。
また、30進法を使用していることで、角度(360度)との割り算の際の親和性が非常に良い。
私がNACの存在を知ったのはロカポの開発後であるが、ロカポの目指すものとコンセプトは一番近かったのがこのNACである。

Conpact text Encoding (Microsoft)
NACからのライセンスのオファーを断った後、マイクロソフトが独自に特許申請していた曰く付きのジオコード。NACとの違いは、大文字ではなく小文字を使っていること、使用しない子音がYではなくてLであること、緯度と経度情報の間にスペースがないこと、緯度経度の順序が逆であること、のみである。コンセプト的にはまったくNACと同じといえる。

新ジオコード(アジア航測)
領域をタイル型に分割していき、二進数で表し、最終的なコードを「もいろぞちわもぞ」などのかな文字によるコードで表すものである。かな文字64文字を使用することで、64進法をとり、二進数との親和性が良い。(7ビットを一文字に割り当てる)。また、航空写真の会社らしく、緯線経線で囲まれた領域の高緯度側が小さくなる歪みまで計算に入れている。

ナビゲーションコード(アイシン・エィ・ダブリュ)
度、分、秒のうち、度の部分をデータベース化し、都市名等で置き換えたコード。コンセプトを簡単にいうと、「都市名 分 秒 分 秒」という構成になるコードである

BINGEO(United States Patent 6,552,670)
マップコードや各種メッシュコードのように領域をメッシュで切っていくタイプのジオコード。ただし、メッシュは正方形で4分割で各領域に00、01、10、11を割り当てている。さらに各正方形が4分割、と所望の精度になるまで分割していく。一つの分割につき2ビット必要である。このコードの特徴はその名の通り二進数との親和性が高い、というより二進数表現そのものであることである。

その他
政府や各種団体が定めたメッシュコードが多数ある。

続く...

ロカポが目指す「使いやすさ」(ロカポ誕生の記録:4)

ロカポが目指すべき使い安さをはっきりさせる必要が出てきた。
まずは元となる緯度経度のメリット、デメリットを考えることが必要であろう。デメリットはもちろん、「長い」ので人間が扱いにくいことである。そのためにいろいろなジオコードが開発されているわけであるが、メリットも大きい。
メリットは
・ 任意の精度で記述できる
・ 全世界で使用できる
・ 数字が大きくなるにつれて北(北緯の場合)や東(東経の場合)に移動するので、二点間の緯度経度から東西南北の位置関係が直感的に分かる。
・ 値の変化と位置の変化が連続的である
・ 電子的な計算手段がなくても、緯度経度と紙の地図だけで位置が特定できる
逆にデメリットは
・ データが緯度と経度の二つになる
・ 10進法で表しているので精度を上げると表示桁数が長くなる
・ フォーマットが自由である(少数点つき度、整数の度+少数点つき分、整数の度、分および少数点つきの秒、ラジアンによる表記、など)
・ 様々な測地系が混在し、緯度経度だけではどの測地系での緯度経度かわかりにくい

このように緯度経度本来のメリットを並べてみると、各種ジオコードは「表示桁数を短くしている」が、逆にメリットのほとんどを犠牲にしていることが分かる。
例えばデンソーのマップコードは、マス目の境界をまたぐとコードががらりと変わり、実際の場所とコードの値の連続性が薄い部分が存在する。また基準点のデータとデコードするロジックを動かすPCなどが必要だ。

当時、私はレジャーにおける遭難時の通報取次ぎサービスのような事業を始めようと考えていた。ワムネットサービスの海ざんまい・山ざんまいのようなサービスである。
遭難や災害などの緊急時に、デコーダがないと場所が分からないようなコードでは不便である。したがって、電子的な計算手段がなくても、最低電卓があればデコードできるようにしたかった。また、メールなどのデジタルな電子的通信手段が使えない場合、つまり無線、トランシーバー、電話など、音声による伝達しか有効でない場合でも使いやすいように、特に音声による伝達ミスを避けたかった。
また捜索する状況を考えると、次々に入ってくる位置情報(コード)について、コードのままある程度直感的に位置関係を把握できることが望ましいが、値と場所の不連続面があるコードでは、これが難しい。

そこでロカポ開発にあたり、条件としたのは次の条件である。
1. 電卓があればデコードできること
2. 人間が音声で伝達をしやすい(読みやすい、言いやすい、聞き取りやすい)こと
3. 全世界で使用可能なこと
4. 十分な精度(できれば1メートル以内)を確保すること
5. コードの値と実際の地域の関連性が直感的に分かること


ロカポにはかなり厳しい条件をつけた。ここで他のジオコードはどのようにしているのか、調べてみる。次回、他のジオコードを紹介する。
続く.

情報圧縮と桁数圧縮(ロカポ誕生の記録:3)

前回の書いた、同じ情報量を持つデータを、大きい基数の記数法(10進法以上の○進法)を用い、情報量を減らさずに少ない表示桁数で表す技術は、桁数圧縮というそうだ。

緯度、経度情報を人間が扱いやすいサイズにするために、そして情報量を減らさないために、いわゆる「可逆情報圧縮技術」も勉強してみた。いわゆるハフマン符号やファイル圧縮技術などの技術で、データの持つ冗長性を削って、情報本来が持つ真の情報量に近づける技術。
これらは何メガバイトもあるファイルでは、多くの冗長性があり、数十パーセント圧縮できるかもしれないが、1メートル精度の緯度経度情報はたかだか50ビット、バイトにすると7バイトのデータであり、これ以上圧縮技術で圧縮することは意味が無い。それに、「本来世界中の任意の地点を表すことができるコード」というコンセプトを掲げた時点で、そのコードはランダムな値を取るものであり、50ビットという情報量はどうしても必要となることが分かった。
つまり、今回のコードの開発では、情報圧縮技術は使えないという結論になった。

情報の偏りを利用して見かけ上の情報量を圧縮する方法もある。今回のコード化を思いついたきっかけとなったビデオ予約のGコードは、チャンネル・日時・録画時間を、応用数学を用いて数値化してある。その際、よく予約されるゴールデンタイムの時刻や録画時間には短い数字となるようにコードを割り当てている。このため、視聴率の高い番組のGコードは非常に短く、短いものでは「たった2桁の数字で予約できる」ように見える。
ただし、これは見かけ上の情報量であり、例えば「23」というGコードは本来「0000000000000023」等であり(Gコードの本当の桁数は知りません)上位桁のゼロは表記していないだけである。逆に言うと、深夜や午前中などの時間帯や、録画時間が中途半端な番組のGコードは長くなり、本来表示に必要な桁数が現れる。
デンソーのマップコードも同じ仕組みで首都圏でのコードを6桁に見せているが、あれは上位4桁にはゼロが入っているのである。
同じ理屈で、例えば海洋部分は長いコードを割り当て、陸地には短いコード、都市部には最も短いコードを割り当てることが出来る。
ただし、この方法では、符号化・復号化には基準となるデータが必要になるなど、使うときに不便な面も多いことも判明した。実際、デンソーのマップコードを使うには、基準点となるデータをデンソーから買わないと使用できない。

ここでふと、本来の緯度、経度の利点について考えた。例えば山や海での遭難の際は、普通緯度経度を使う。もしマップコードで遭難の通報があったら、通報を受けた側がパソコン等の電子機器を用意していてマップコードを緯度経度に変換しないと救助に向かえない。もし電子機器を使用しないとデコードできないと、こういう場合は問題になる。

これまで漠然と「使いやすいコード」を作りたいと考えていたが、ここらへんでしっかり「使いやすい」の定義を固めておく必要がありそうだと思った。

次回、ロカポイントのコンセプトでもある「使いやすい」の定義についての考察を書きます。
続く..

2005/10/12

情報量と表示に必要な桁数の関係(ロカポ誕生の記録:2)

地球上のあらゆる地点を1メートルの精度で表すために必要なデータ量を、次のように計算してみた。

地球の子午線が 40,000,000 メートルなので、1メートル精度であればそのまま40,000,000 ステップが必要である。全世界では

20,000,000 ステップ(緯度方向:子午線の半分)
×
40,000,000 ステップ(経度方向)
= 8×10の14乗 ステップ

が必要である。
技術的な観点で言うと、8×10の14乗 ステップは49.507ビットの情報量ということになる。この情報量を表すには、いろいろな基底の記数法(2進法、16進法、10進法など)で表すと、必要とされる桁数は以下のようになる。


50 桁: 2進法(Binary)
15 桁: 10進法(Decimal)
13 桁: 16進法(HEX)
11 桁: 26進法
10 桁: 36進法
9 桁: 60進法
4 桁: 10000進法

もし、10進法であれば最低15桁必要であり、クレジットカード番号(16桁)のように覚えやすいコードとは言えない。

もし16進法(0~9とA~Eを使う))なら13桁に短縮されるが、"28a6f6b021cf3" は電話番号のように覚えやすいとは言えない。

も し中国語の漢字(や他のユニコードの文字)を10000文字使用して、10000進法にすればたった4文字で表現することができる。しかし、実際にこの ようなコードが使いにくいことは容易に想像できた。それに、○進法の○の数値が大きくなればなるほど、桁数の短縮効果は少なくなってくることが分かる。し たがって、基数を大きくするより文字種を扱いやすい数に絞る方が、効果が高いかもしれない。

現段階で選択肢は二つあった。
1.情報量そのものを減らす。
精度を30メートルなどに落とす
コードの適用エリアを絞る
2.情報量は減らさない
ただし、扱いやすいコードを開発する必要がある。


既 存の「ジオコード」は1の方法を採用しているものが多い。例えばデンソーの「マップコード」は適用地域を日本国内(のさらに陸地付近)に限定し、精度を ナビゲーション用に30メートルと割り切ることで、10桁の数字で表すことを可能にしている。マップコードは数字(=10進法)を使っているので、10倍 の精度(3メートルの精度)を表すには、緯度方向と経度方向にもう一桁ずつ必要であり、12文字で表す拡張仕様になっている。

私はユニ バーサルなコード、つまり世界のどこでも使用可能なコードにしたかったことと、測量などの本格的なものを除いて、人間が扱うさまざまな用途に対応 したかったので、1メートルの制度も地球規模の適用範囲も譲れませんでした。したがって、2番目の方法を模索していくことに決めました。
ただ、この時点ではどうやっていけば良いのか、まったくアイデアの無い状態でした。


続く..

2005/10/07

ロカポ誕生の記録(1)

まだプレオープンでお客様もあまりおりませんので、ロカポを開発するに至った経緯を書いておこうと思います。

2004/10/25(月)、長野県塩尻市にあるGPS関係のベンチャー企業の社長さんとお会いした帰りでした。私自身も翌週の11/1に会社設立を予定していて、GPS(というかGIS)でビジネスをしていきたいと考えていました。

塩尻から名古屋までの特急で考え事をしているのか、ウトウトしているのか、そんなときにふと、こんな事を考えました。

宴会に行くとき、場所が分からない。お店の電話番号は分かっているので、お店の人に電話する。「すいません、そちらに行きたいのですが、道が分かりません。携帯のナビはあるのですが、お店の緯度経度ってわかりますか?」・・・てお店の人が分かるわけないですよね。
でもみな電話番号は覚えているのに(最近はそうでもないか)緯度経度は覚えていない。どうしてだろう? きっと「東経135度XX分XX秒、北緯35度YY分YY秒です」とは覚えきれないからだ。緯度経度で十分な精度、例えば1メートル程度の分解能を表すには、度、分、秒で表記しても度で表記しても合計15桁程度の数字が必要だ。電話番号は10桁。 きっと脳に記憶できる限界があって、それは10桁の電話番号と15桁の緯度経度の間にあるのかもしれない。

そこでふと浮かんだのがビデオ予約のGコードでした。Gコードはチャンネルと録画開始日時、録画時間を数桁の数字に圧縮してある。『GIS版のGコード』をつくれば、脳の記憶能力の限界以下に情報を圧縮し、誰もが位置情報を気軽に使える世の中になるかもしれない。

そこで眠気も覚め、私はパソコンを取り出し、エクセルでいろいろ計算しはじめました。

続く...

2005/10/02

ロカポ(Locapoint)のサイト、本日プレオープン

本日、ロカポ(Locapoint)のサイトをプレオープンすることができました。
Direction Creator では、Google Map上に直接、マーカーとコメントを置いたり、線を描いたりして自分だけの「ガイドマップ」を作ることができます。
まだまだ不具合があり、さらに「重い」のですが、徐々に改良していく予定です。
ご期待下さい。

このブログへ来て頂きまして、ありがとうございました。
NAO